package com.platform.common.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author GH
 * @description API异常枚举类，需要客户端处理
 */
@Getter
@AllArgsConstructor
public enum ApiExceptionEnum {

    /****************************通用业务相关*******************************/


    SUCCESS(200, "成功", false),

    /**
     * 参数无效
     */
    PARAM_NOT_VALID(10400, "参数非法,请重新输入", false),

    /**
     * 业务上的权限不足
     */
    USER_NO_PERMISSION(10401, "用户权限不足", false),

    /**
     * 通用失败，服务器不支持用户所请求的功能，非系统问题故不打印日志
     */
    COMMON_FAIL(10500, "操作失败", false),

    /**
     * 系统故障，必为系统问题，故需打印日志
     */
    SYSTEM_FAIL(10501, "系统故障", true),

    /**
     * 数据库操作失败，短期超时或宕机，故需打印日志排查宕机问题
     */
    DB_FAIL(10502, "操作失败，请稍后重试", true),

    GET_IP_ERROR(10503, "获取不到IP", false),

    UNKNOWN_ERROR(10504, "服务器出错", true),
//    GATEWAY_ERROR(500, "网关错误", false),

    /*渲染失败*/
//    MAIN_GET_FAIL(4000,"404页面"),
//    GET_FAIL(4001,"加载失败，请稍后重试"),


    /* 参数错误：1000～1999 */
//    PARAM_IS_BLANK(1002, "参数为空"),
//    PARAM_TYPE_ERROR(1003, "参数类型错误"),
//    PARAM_NOT_COMPLETE(1004, "参数缺失"),


    /* 登录相关 */
//    USER_NOT_LOGIN(2001, "用户未登录"),
//    USER_CREDENTIALS_ERROR(2003, "密码错误"),
//    USER_ACCOUNT_NOT_EXIST(2007, "账号不存在"),
//    USER_ACCOUNT_LOCKED(2006, "账号被锁定"),


    /* 业务错误 */
//    USER_ACCOUNT_EXPIRED(2002, "账号已过期"),
//    USER_CREDENTIALS_EXPIRED(2004, "密码过期"),
//    USER_ACCOUNT_DISABLE(2005, "账号不可用"),

//    USER_ACCOUNT_USE_BY_OTHERS(2009, "账号下线"),


    /****************************注册登录限流相关*******************************/


    CAPTCHA_NOT_FOUND(20400, "请输入验证码", false),
    CAPTCHA_OUT_OF_DATE(20400, "验证码已过期", false),
    CAPTCHA_NOT_MATCHING(20400, "验证码不匹配", false),
    USER_NOT_LOGIN(20401, "该用户未登录", false),
    /**
     * 系统上的权限不足
     */
    USER_NOT_MATCHING(20402, "该用户权限不足", false),

    PHONE_EXIST(20403, "手机号已存在", false),
    WX_ACCOUNT_EXIST(20403, "微信账号已存在", false),
    EMAIL_EXIST(20403, "邮箱已存在", false),
    USER_ACCOUNT_ALREADY_EXIST(20403, "账号已存在", false),
    //    NONE_EMAIL_SENDER(500, "服务器没有配置邮件发送者", false),
//    EMAIL_SEND_FAILED(500, "邮件发送失败，请联系管理员", true),
    PASSWORD_NOT_MATCHING(20404, "账号或密码错误", false),
    SERVER_BUSY(20500, "服务器正忙", false),


    /***********************************课程相关*******************************/


    COURSE_NOT_FOUND(30400, "课程不存在", false),
    COURSE_LIVE_NOT_FOUND(30400, "直播不存在", false),
    CONTEST_NOT_FOUND(30400, "测试不存在", false),
    CONTEST_PART_NOT_FOUND(30400, "部分测试不存在", false),
    CONTEST_NOT_BEGIN(30401, "测试未开始", false),
    EXAM_TIME_OUT(30402, "测试次数已用完", false),
    COURSE_AMOUNT_IS_NOT_ENOUGH(30403, "课程余额不足", false),


    /**************************************用户相关******************************/


    MONEY_NOT_ENOUGH(40400, "余额不足", false),
    GROUP_NOT_FOUND(40401, "群组不存在", false),
    SOCIETY_NOT_FOUND(40401, "协会不存在", false),
    TEAM_NOT_FOUND(40401, "团队不存在", false),
    GROUP_NOT_IN(40402, "你已不在该群组中", false),


    /*******************************管理后台**********************************/
    USER_NOT_FOUND(50400, "该用户不存在", false),
    DEPARTMENT_IS_NOT_EMPTY(50401, "部门还有员工，无法删除", false),


    /***********************************文章相关*******************************/
    ARTICLE_NOT_FOUND(60400, "文章不存在", false);

    public int code;
    public String message;
    /**
     * 是否打印日志
     */
    public boolean isPrint;
}
